package org.dfg.corejava.designPattern.singleton;

public final class Singleton {
	// 静态对象
	private static Singleton s;

	// 私有化构造方法
	private Singleton() {
	}

	// 提供全局访问点
	public synchronized static Singleton getInstance() {
		return s == null ? s = new Singleton() : s;
	}

	private static Object syn = new Object();

	public static Singleton getInstance2() {
		// 如果为null再加锁，提高性能
		if (s == null) {
			synchronized (syn) {
				// 如果两个线程同时进入，若不做如下判断，则第二个进入的线程又会创建一个新对象
				if (s == null) {
					s = new Singleton();
				}
			}
		}
		return s;
	}
}
